<?php

class VEnderecoLogic extends VLogicModel {

    public function __construct() {
        parent::__construct(new VEnderecoDAO());
    }

    /**
     * Ajax
     * Obtem lista de estados de um municipio para a consulta de CEP
     * @param int $params['idEstado']
     * @return object $json
     */
    public function ajaxListEnderecoConsultaCep($params) {
        
        /* Atributos do objeto que poderam ser ordenado */
        $atributos = array( 'id', 'logradouro', 'bairro');
        $order = TDataTableHelper::mountOrderBy($atributos, $params['iSortCol_0'], $params['sSortDir_0']);
        unset($atributos);
        /* Colunas do banco a serem pesquisandas */
        $colunas = array( 'num_cep', 'nom_logradouro', 'nom_bairro');
        /* Montar string de pesquisa no where */
        $search = TDataTableHelper::mountSearch($colunas, $params['sSearch'], false);
        $AND = ($search === null) ? '' : "AND {$search}";
        $where = "ide_municipio = '{$params['idMunicipio']}' {$AND}";
        unset($colunas);
        /* Total de registros */
        $iTotal = $this->totalRegistro($where);
        /* Listar */
        $arrayListObject = $this->listar($where, $order, null, null, $params['iDisplayStart'], $params['iDisplayLength']);
        unset($where);
        /* Montar output */
        $output = TDataTableHelper::mountArrayOutPut($params['sEcho'], $iTotal);
        unset($iTotal);

        if (isset($arrayListObject[0])) {
            foreach ($arrayListObject as $object) {
                $cep = "<a onclick='obterEndereco(\"".FormatHelper::formatCEP($object->getId())."\")' style='cursor:pointer;' >".FormatHelper::formatCEP($object->getId())."</a>";
                $output['aaData'][] = array(
                    utf8_encode($cep),
                    utf8_encode($object->getLogradouro()),
                    utf8_encode($object->getBairro())
                );
                unset($cep);
            }
        }
        unset($arrayListObject);

        return json_encode($output);
    }

    public function ajaxObterEnderecoFromCep($params) {
        $cep = FormatHelper::limparString($params['cep']);
        $objVEdereco = $this->obterPorId($cep);
        if (is_object($objVEdereco)) {
            $jsonEndereco = array();
            $jsonEndereco['estado'] = $objVEdereco->getEstado();
            $jsonEndereco['idMunicipio'] = $objVEdereco->getIdMunicipio();
            $jsonEndereco['municipio'] = utf8_encode($objVEdereco->getMunicipio());
            $jsonEndereco['idBairro'] = $objVEdereco->getIdBairro();
            $jsonEndereco['bairro'] = utf8_encode($objVEdereco->getBairro());
            $jsonEndereco['logradouro'] = utf8_encode($objVEdereco->getLogradouro());
            return json_encode($jsonEndereco);
        } else {
            return false;
        }
    }

    public function ajaxCepEnderecoValido($params) {
        $cep = FormatHelper::limparString($params['cep']);
        $objVEdereco = $this->obterPorId($cep);
        return (is_object($objVEdereco)) ? true : false ;
    }

}

?>